The present availability of high-capacity networks, computing power, and storage, as well as the widespread adoption of hardware virtualization, service-oriented architecture, and autonomic and utility computing have led to a growth in cloud computing.
In cloud computing, multiple remote servers (usually a large number) are networked to allow centralized data storage and online access to computer services or resources. Cloud resources are typically shared by multiple users and also dynamically reallocated based on demand.
Software as a service (SaaS) is a category of cloud computing services in which software is centrally hosted and provided as a service. SaaS is typically accessed by users using a thin client via a web browser. Typically, a single version of the application is used for all customers, although customization of the application may be accomplished by selecting from a set of predefined configuration options. Thus, SaaS systems are inflexible.
Platform as a Service (PaaS) is a category of cloud computing services in which a computing platform and a solution stack are provided as a service. In PaaS, a provider provides a user with tools and/or libraries for creating an application or service to be hosted on the provider's platform, i.e., servers, storage, and other services that are required to host users' applications. Since PaaS systems typically support only a limited number of programming languages and frameworks, however, adopting a PaaS system may require utilizing an unfamiliar language and/or programming framework.
Online file storage, or cloud storage, allows a user to store files on a remote server or servers and later access the files. For example, a user can upload files, and the files can later be accessed over the Internet from the same computer or a different computer, by the same user or sometimes by other users. Many cloud storage providers utilize an object storage architecture that manages data as objects.